package com.递归;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;

/**
 * 编写一个函数，以字符串作为输入，反转该字符串中的元音字母。
 *
 * 示例 1:
 *
 * 输入: "hello"
 * 输出: "holle"
 * 示例 2:
 *
 * 输入: "leetcode"
 * 输出: "leotcede"
 * 说明:
 * 元音字母不包含字母"y"。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/reverse-vowels-of-a-string
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class 反转字符串中的元音字母 {
    class Solution {
        //利用栈的特性
        public String reverseVowels(String s) {

            Stack<Character> stack = new Stack<>();
            List<Character> list = Arrays.asList('a','e','i','o','u','A','E','I','O','U');
            //如果有就元音就加入到栈中
            for (Character c : s.toCharArray()) {
               if(list.contains(c)){
                   stack.push(c);
               }
            }
            StringBuilder builder = new StringBuilder();

            for (Character c : s.toCharArray()) {
                //如果是元音就人栈中取出
                if(list.contains(c)){
                    builder.append(stack.pop());
                }
                //不是就不管
                else{
                    builder.append(c);
                }
            }
            return builder.toString();
        }


    }

    public static void main(String[] args) {
        反转字符串中的元音字母 fz = new 反转字符串中的元音字母();
        反转字符串中的元音字母.Solution solution = fz.new Solution();
        System.out.println( solution.reverseVowels("aeiou"));
    }
}
